package com.quick.develop.flowable.service.task;

import org.flowable.engine.repository.Model;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;

/**
 * @author junyuan.liu
 * @description: 
 * @date 2022/7/4 14:40
 */
public interface IBpmPermissionService {
    /** 
     * @description  校验任务是否存在， 并且是否是分配给自己的任务 任务是否挂起
     * @param taskId 任务ID
     * @return org.flowable.task.api.Task
     * @author junyuan.liu
     * @date 2022/7/4 14:42
     */ 
    Task checkTask(String taskId);
    
    /** 
     * @description 
     * @param taskId 任务ID
     * @param userId 用户编号
     * @return org.flowable.task.api.Task
     * @author junyuan.liu
     * @date 2022/11/11 16:11
     */ 
    Task checkTask(String taskId, String userId);

    /** 
     * @description  校验模型是否存在
     * @param id 模型ID
     * @return org.flowable.engine.repository.Model
     * @author junyuan.liu
     * @date 2022/7/5 15:19
     */ 
    Model checkModel(String id);

    /** 
     * @description  根据部署ID 校验流程定义是否存在
     * @param id 部署ID
     * @return org.flowable.engine.repository.ProcessDefinition
     * @author junyuan.liu
     * @date 2022/7/5 15:21
     */ 
    ProcessDefinition checkProcessDefinitionByDeploymentId(String id);
    
    /** 
     * @description 验证是否超级管理员 不是的话抛异常
     * @author junyuan.liu
     * @date 2022/9/14 11:31
     */ 
    void isAdminOnException();
    
    /** 
     * @description 判断运行流程是否存在
     * @param id 流程实例ID
     * @return org.flowable.engine.runtime.ProcessInstance
     * @author junyuan.liu
     * @date 2022/9/19 19:11
     */ 
    ProcessInstance runProcessNotExistOnException(String id);
}
